package main

/*
* Content: panic抛出异常-recover捕捉异常
* --------------------------------------------------
* Go panic 与 recover: https://www.runoob.com/note/38704
 */

import "fmt"

func MyPanicRecover() {

	// panic抛出异常-recover捕捉异常
	fmt.Println("--------------------panic抛出异常-recover捕捉异常--------------------")

	// 程序结束是捕捉异常: defer 最后执行
	defer func() {
		if err := recover(); err != nil {
			fmt.Printf("捕捉到的异常为: %v\n", err) // err: 保存的是最后一个异常中的 值
		}
	}()

	// 存在多个 panic, 只会捕捉最后一个 panic
	defer func() {
		panic("three")
	}()
	defer func() {
		panic("two")
	}()
	panic("one")

	// panic 后面的代码不会继续执行
	fmt.Println("Panic 后面的代码！")

}
